草庐IT

java - 规范化 JSON 文件

全部标签

ruby - 使用 ruby​​-yajl 解析大型 JSON 哈希?

我有一个包含JSON散列的大文件(>50Mb)。像这样的东西:{"obj1":{"key1":"val1","key2":"val2"},"obj2":{"key1":"val1","key2":"val2"}...}与其解析整个文件并取前十个元素,不如解析散列中的每个项目。我实际上并不关心key,即obj1。如果我将上面的转换为:{"key1":"val1","key2":"val2"}"obj2":{"key1":"val1","key2":"val2"}我可以使用Yajl流轻松实现我想要的:io=File.open(path_to_file)count=10Yajl::Parse

ruby-on-rails - 使用机架中间件捕获无效的 JSON 解析错误

我正在使用Rails5,我正在尝试改进对我的API的无效JSON请求的错误处理。我尝试通过救援在Controller中解析来处理无效格式的JSON,但意识到如果用户将ContentType添加到他们的请求header,Rails中间件会在我的JSON请求到达Controller之前解析它。我遵循了以下指南:https://robots.thoughtbot.com/catching-json-parse-errors-with-custom-middleware但是,在启动服务器时出现以下错误:.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems

Ruby 1.9 - 没有这样的文件可以加载 'win32/open3'

我在Windows上运行ruby​​1.9.2并试图移植在Ruby1.8中工作的代码。该代码使用以前运行良好的Open4.popen4。对于1.9.2,我做了以下事情:通过geminstallPOpen4安装了POpen4需要POpen4通过require'popen4'尝试像这样使用POpen4:Open4.popen4("cmd"){|io_in,io_out,io_er|...}当我这样做时,我得到了错误:nosuchfiletoload--win32/open3如果我尝试安装win32-open3(geminstallwin32-open3),我会收到错误消息:win32-op

ruby - 如何在 ruby​​ 中设置 header ['content-type' ] ='application/json'

require'net/http'require'rubygems'require'json'url=URI.parse('http://www.xyxx/abc/pqr')resp=Net::HTTP.get_response(url)#get_responsetakesanURIobjectdata=resp.bodyputsdata这是我在ruby​​中的代码,resp.data以xml形式提供给我数据。restapi默认返回xml数据,如果headercontent-type是application/json,则返回json。但我想要json格式的数据。为此我必须设置heade

ruby - Sidekiq 服务器未加载配置文件

我正在尝试使用我的sinatra应用程序设置sidekiq,并且我有使用配置文件启动sidekiqworker在守护进程模式下运行时遇到问题。我的项目有以下结构:project-config--sidekiq.yml#SidekiqConfigFile-app--app.rb#SinatraApplicationFile-Rakefile-Gemfile-etc.最终目标是创建一些rake任务来处理所有sidekiq任务。现在,我只是想通过命令行让它正常工作,然后我会通过rake让它工作。sidekiq.yml#SidekiqConfiguration---development:lo

ruby-on-rails - Ruby 自动删除临时文件?

我很困惑。这是我的代码:require'csv'require'tempfile'f=Tempfile.new('csv','/tmp')f.write'justwannatest'f.closepf.path如果我打开输出路径,它是空的。我认为这是因为每次ruby​​session退出时,TempFile都会自动从文件系统中删除。但是,我如何确切知道文件何时被删除?因为我想用它在我的Rails应用程序中创建临时文件,我担心文件在使用前是否被删除了。 最佳答案 来自文档:WhenaTempfileobjectisgarbagecol

ruby-on-rails - 如何生成 CSV 文件?

我正在尝试使用我的数据库中的数据生成CSV输出。我想将这些数据提供给第三方,所以我想象我会给某人一个URL(website.com/api_data/cars),通过访问此URL,此人将能够工作有了它-我想我想访问URL,然后(在操作中)查看显示的数据并用、或;分隔。但是怎么做呢?到目前为止,我正在尝试以下方法:csv_string=CSV.generatedo|csv|cols=["columnone","columntwo","columnthree"]csv'text/csv;charset=utf-8;header=present',:filename=>@filename)这

ruby-on-rails - XPath 或 CSS 解析速度更快(对于 HTML 文件上的 Nokogiri)?

我想知道NokogiriXPath或CSS解析是否可以更快地处理HTML文件。速度有何不同? 最佳答案 Nokogiri没有XPath或CSS解析。它将XML/HTML解析为单个DOM,然后您可以使用CSS或XPath语法进行查询。CSS选择器在要求libxml2执行查询之前在内部转换为XPath。因此(对于完全相同的选择器)XPath版本会快一点点,因为CSS不需要先转换成XPath。但是,您的问题没有通用答案;这取决于您选择的是什么,以及您的XPath是什么样的。很有可能,您不会编写与Nokogiri创建的相同的XPath。例如

ruby - 将 OpenStruct 深度转换为 JSON

我有一个OpenStruct,它嵌套在许多其他OpenStructs中。将它们全部深度转换为JSON的最佳方法是什么?理想情况下:x=OpenStruct.newx.y=OpenStruct.newx.y.z=OpenStruct.newz='hello'x.to_json//{y:z:'hello'}现实{} 最佳答案 没有默认方法来完成这样的任务,因为内置的#to_hash返回哈希表示,但它不会深度转换值。如果值是OpenStruct,它会原样返回,不会转换成Hash。然而,这并不难解决。您可以创建一个遍历OpenStruct实

ruby - 如何让 Ruby JSON 解析器忽略 json_class?

我有一个序列化的JSON字符串(实际上是chef角色定义),它有一个json_class键,使ruby​​JSON解析器试图强制它成为一个Chef::Role对象。我怎样才能让解析器忽略这个键,只是简单地反序列化成一个普通的哈希? 最佳答案 我遇到了同样的问题,通过阅读JSONgem的源代码找到了答案——在尝试解析之前取消设置JSON.create_id:JSON.create_id=nilJSON.parse('{"json_class":"Chef::Role"}').class=>Hash编辑:请注意,由于gem的版本为1.7